package com.tedu.api.thread;

/**
 * 线程：单线程【main主线程】 多线程，创建两个线程以上同时处理一件事情【并发、】
 * 多线程开发
 * 多人聊天室 Version 2 多个人在同一个服务器聊天
 *
 * 多线程案例：
 *   Kitchen 厨房类---两个厨子==两个线程--炒菜
 *   Chef  厨子类---每个厨子使用厨房炒不同菜系【并发】
 */
public class Kitchen {
    public static void main(String[] args) {
        //创建线程--直接lambda表达式【没有并发，创建一个对象】
        //【并发--实现Runnable】
        Thread chef1=new Thread(new Chef("西红柿炒鸡蛋"));//
        Thread chef2=new Thread(new Chef("锅包肉"));
        Thread chef3=new Thread(new Chef("红烧肉"));
        chef1.start();//厨子  1~3秒
        chef2.start();
        chef3.start();
    }

}
//1.创建厨子类；每个厨子炒不同才--线程：Runnable接口【项目：建议结构合理】
class Chef implements Runnable{
    private  String dishName; //私有属性
    //传入构造器：通过构造器确定，哪位厨子炒什么菜
    public Chef(String dn){
        //私有菜系
        this.dishName=dn;
    }
    //3.实现厨子功能：1到3秒随机炒出一道菜
    public void run(){
        System.out.println("开始准备:"+dishName);
        //准备时间：1~3秒---Random随机数类--》math数学类，随机数random()
        /**
         * Math.random():生成随机数，范围：0.0~1.0之间浮点数【不包括1.0】
         * Math。random()*3000 生成随机数：
         * 范围：0.0~3000.0之间浮点数【不包括3000.0】
         * 转换成long：0到2999的整数   012
         * (long)(Math.random()*3000)+1000);
         * 范围：1000~3000
         */
        try {
            Thread.sleep((long)(Math.random()*3000)+1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        };
        System.out.println("准备完毕"+dishName+"请开吃");
    }
}

